package com.gking.centerSystem.service.User;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.gking.centerSystem.common.Result;
import com.gking.centerSystem.entity.dao.PagingQueryUserDao;
import com.gking.centerSystem.entity.Routes;
import com.gking.centerSystem.entity.User;

import javax.servlet.http.HttpServletRequest;
import java.util.List;
import java.util.Map;

public interface UserService extends IService<User> {


    /**
     * 用户注册
     *
     * @param account  账号
     * @param password 密码
     * @return s
     */
    public Result<String> regUser(String account, String password);


    /**
     * 验证码
     *
     * @param request 线程
     * @return s
     */
    public Result<String> verificationCode(HttpServletRequest request);

    /**
     * 用户登录
     *
     * @param request          线程
     * @param account          账号
     * @param password         密码
     * @param verificationCode 验证码
     * @return s
     */
    public Result<String> login(HttpServletRequest request, String account, String password, String verificationCode);


    /**
     * 获取用户登录缓存的凭证信息
     *
     * @param equipment 设备信息
     * @param ip        ip地址
     * @return s
     */
    public Result<Map> getUserLoginAuth(String equipment, String ip);

    /**
     * 用户退出
     *
     * @return s
     */
    public Result<String> logout();

    /**
     * 获取用户信息
     *
     * @return s
     */
    public Result<User> getUserInfo();

    /**
     * 修改用户信息
     *
     * @param nickname    昵称
     * @param phoneNumber 手机号
     * @param email       邮箱
     * @param signature   邮箱
     * @return s
     */
    public Result<String> updateUserInfo(String nickname, String phoneNumber, String email, String signature);

    /**
     * 获取用户可以访问的页面路由
     *
     * @param systemName 系统名称
     * @return s
     */
    public Result<List<Routes>> getUserAccessRoutes(String systemName);

    /**
     * 分页条件查询用户信息
     *
     * @param page               分页页码
     * @param size               分页大小
     * @param pagingQueryUserDao 分页查询用户的一些条件
     * @return s
     */
    public Result<Page> queryPageUserList(Integer page, Integer size, PagingQueryUserDao pagingQueryUserDao);

    /**
     * 分页条件查询用户信息
     *
     * @param page               分页页码
     * @param size               分页大小
     * @param account            账号
     * @param nickname          昵称
     * @return s
     */
    public Result<Page> queryPageUserByEasy(Integer page, Integer size, String account, String nickname);



    /**
     * 设置用户状态
     *
     * @param userId 用户id
     * @param status 状态 0 、1
     * @return s
     */
    public Result<String> setUserStatus(List<String> userId, String status);

}
